#ifndef PROCESS_STRUCT_H
#define PROCESS_STRUCT_H

#include <stdint.h>
#include <time.h>

// 进程状态枚举
typedef enum {
    NEW,           // 新建
    READY,         // 就绪
    RUNNING,       // 运行
    WAITING,       // 等待
    TERMINATED     // 终止
} ProcessState;

// 寄存器上下文结构体
typedef struct {
    uint32_t eax, ebx, ecx, edx;  // 通用寄存器
    uint32_t esi, edi, ebp, esp;  // 指针寄存器
    uint32_t eip;                // 指令指针
    uint32_t eflags;             // 标志寄存器
} RegisterContext;

// 文件描述符表项
typedef struct {
    int fd;                   // 文件描述符编号
    int mode;                 // 打开模式（读/写/追加）
    // 其他文件相关信息
} FileDescriptor;

// 进程控制块结构体
typedef struct {
    int pid;                  // 进程ID
    int ppid;                 // 父进程ID
    ProcessState state;       // 进程状态
    RegisterContext context;  // 寄存器上下文
    uint32_t priority;        // 进程优先级
    time_t creation_time;     // 创建时间
    time_t start_time;        // 开始执行时间
    time_t cpu_time_used;     // 已使用CPU时间
    struct mm_struct *mm;     // 虚拟内存管理
    FileDescriptor files[10]; // 文件描述符表
    // 其他进程相关信息
} PCB;

#endif // PROCESS_STRUCT_H    